package cn.ruleengine.core.decisiontable;

import lombok.Getter;


public enum DecisionTableStrategyType {

    /**
     * 返回所有优先级命中的结果
     */
    ALL_PRIORITY(1),

    /**
     * 返回命中的最高优先级第一个结果
     */
    HIGHEST_PRIORITY_SINGLE(2),

    /**
     * 返回命中的最高优先级所有结果
     */
    HIGHEST_PRIORITY_ALL(3);

    @Getter
    private final Integer value;

    DecisionTableStrategyType(Integer value) {
        this.value = value;
    }

    public static DecisionTableStrategyType getByValue(Integer value) {
        switch (value) {
            case 1:
                return ALL_PRIORITY;
            case 2:
                return HIGHEST_PRIORITY_SINGLE;
            case 3:
                return HIGHEST_PRIORITY_ALL;
            default:
                throw new IllegalStateException("Unexpected value: " + value);
        }
    }

}
